package domain.controllers;


import domain.Entity.EntityTrabajador;
import domain.Entity.EntityUsuario;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import managers.InformeManager;
import managers.UsuarioManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.springframework.web.servlet.view.RedirectView;



/**
 *
 * @author jorge
 */
public class guardarController implements Controller{

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
       
       ModelAndView mav = new ModelAndView();
       HttpSession session = request.getSession();
       EntityUsuario eu = (EntityUsuario) session.getAttribute("usuario");
        if(eu == null){
            mav.setView(new RedirectView("login.htm"));
            return mav;
        }else{
    
        InformeManager im = InformeManager.getInstance();
        
        UsuarioManager um = UsuarioManager.getInstance();    
        
        String url = (String) session.getAttribute("urlinforme");
        url = url.concat("&guardado=true");
        String tipo = (String) session.getAttribute("tipo");
        String subtipo = (String) session.getAttribute("subtipo");
        String nombre = "";
        if(tipo.equals("trabajador")){
            String s = (String) session.getAttribute("trabajadorInforme");
            long identificador = Integer.parseInt(s);
            EntityTrabajador etrInforme = um.getTrabajador(identificador);
            nombre ="Informe "+etrInforme.getNombre()+" "+subtipo;
        }else{
            nombre = "Informe "+tipo+" "+subtipo;
        }
        
        Date hoy = new Date();
        int nmes = hoy.getMonth();
        String mes = "";
        if(nmes == 0){
        mes = "Enero";
        }else if(nmes == 1){
        mes = "Febrero";
        }else if(nmes == 2){
        mes = "Marzo";
        }else if(nmes == 3){
        mes = "Abril";
        }else if(nmes == 4){
        mes = "Mayo";
        }else if(nmes == 5){
        mes = "Junio";
        }else if(nmes == 6){
        mes = "Julio";
        }else if(nmes == 7){
        mes = "Agosto";
        }else if(nmes == 8){
        mes = "Septiembre";
        }else if(nmes == 9){
        mes = "Octubre";
        }else if(nmes == 10){
        mes = "Noviembre";
        }else if(nmes == 11){
        mes = "Diciembre";
        }
            if(subtipo.equals("general") || subtipo.equals("mensual")){
                nombre = nombre.concat(" "+mes);
            }else if(subtipo.equals("trabajador")){
                String s = (String) session.getAttribute("dniTrabajadorGestor");
                long dni = Integer.parseInt(s);
                EntityTrabajador etr = um.getTrabajador(dni);
                nombre = nombre.concat(etr.getNombre());
            }else if(subtipo.equals("anual")){
                int ano = hoy.getYear() + 1900; 
                nombre = nombre.concat(" "+ ano);
            }else if(subtipo.equals("fechas")){
                String fechaIni = (String) session.getAttribute("fechaIniInforme");
                String fechaFin = (String) session.getAttribute("fechaFinInforme");
                nombre = nombre.concat("("+fechaIni+")-("+fechaFin+")");
            }else if(subtipo.equals("semanal")){
                int dia = hoy.getDate();
                String semana = "";
                if(dia >1 && dia <=7 ){
                    semana = "primera semana de";
                }else if(dia >7 && dia <=14){
                    semana = "segunda semana de";
                }else if(dia >7 && dia <=14){
                    semana = "segunda semana de";
                }else if(dia >14 && dia <=21){
                    semana = "tercera semana de";
                }else if(dia >21 && dia <=28){
                    semana = "cuarta semana de";
                }else if(dia >28 && dia <=31){
                    semana = "quinta semana de";
                }
                nombre = nombre.concat(" "+semana+" "+mes);
            }else if(subtipo.equals("etiqueta")){
                String etiqueta = (String) session.getAttribute("etiquetaInforme");
                nombre = nombre.concat("("+etiqueta+")");
            } 
        
        im.addInforme(eu, tipo, subtipo, url, nombre);
        
        mav.setView(new RedirectView("mostrarInformes.htm"));
        return mav;
        }
    }

}
